package bit_operation;

/**
 * @Description
 * @Author Firenut
 * @Date 2023-03-25 14:18
 */
public class T65_add {
    // 需要明确：a+b <==> 进位和c + 非进位和d
    // 进位和c = (a & b)<<1
    // 非进位和 d = (a^b);
    // 由于不能使用加法进行运算，所以需要一直循环转换
    // 直到c=0得到d,即为最终结果
    public int add(int a, int b) {
        while (b != 0) {
            int c = (a & b) << 1;
            a = a ^ b;
            b = c;
        }
        return a;
    }
}
